增加模型定义
模型定义
模型是对一个业务实体的抽象定义,是 Yao 中最重要的一个组件,有以下用途:
- 使用模型描述业务实体,以及业务实体间的关联关系。
- 根据模型自动生成数据库对应的表结构。
- 根据模型自动生成界面配置。
- 根据模型自动生成相关表的 CURD API 接口。
创建模型
模型定义文件都需要放在应用目录的 models 目录下。比如应用模板中就自带了两个示例模型。
admin.user.mod.yao
用户模型,用于保存管理员用户名密码,比如默认用户xiang@iqka.com
就保存在这个模型对应的表中。pet.mod.yao
示例宠物模型。
sh
├── models
│ ├── admin
│ │ └── user.mod.yao
│ └── pet.mod.yao
模型文件可以使用后缀.yao
,.jsonc
,.json
。
先看示例中的模型文件定义:models/pet.mod.yao
。
jsonc
{
"name": "::Pet",
"table": { "name": "yao_demo_pet", "label": "宠物表" },
"columns": [
{ "name": "id", "label": "ID", "type": "ID" },
{
"name": "name",
"label": "昵称",
"type": "string",
"length": 80,
"index": true,
"nullable": true
},
{
"name": "type",
"label": "类型",
"type": "enum",
"option": ["cat", "dog", "others"],
"index": true
},
{
"name": "status",
"label": "入院状态",
"type": "enum",
"option": ["checked", "curing", "cured"],
"index": true
},
{
"name": "mode",
"label": "状态",
"type": "enum",
"option": ["enabled", "disabled"],
"index": true
},
{
"name": "online",
"label": "是否在线",
"type": "boolean",
"default": false,
"index": true
},
{
"name": "curing_status",
"label": "治疗状态",
"type": "enum",
"default": "0",
"option": ["0", "1", "2"],
"index": true
},
{ "name": "stay", "label": "入院时间", "type": "integer" },
{ "name": "cost", "label": "花费", "type": "integer" },
{
"name": "images",
"type": "json",
"label": "相关图片",
"nullable": true
}
],
"relations": {},
"values": [],
"indexes": [],
"option": {
"timestamps": true,
"soft_deletes": true
}
}
一般来说模型结构有以下的内容:
json
{
"name": "用户",
"table": {},
"columns": [],
"indexes": [],
"relations": {},
"values": [],
"option": {}
}
详细的模型定义细节说明参考: Yao Model 定义
模型的内容比较多,在初学时重点关注 columns 与 table 节点的配置。
当你掌握与理解模型的定义与相关概念后,可以使用 AI 或是相关的工具辅助你快速生成模型。
使用 AI 创建模型
除了可以手动创建模型,还可以使用 Neo 助手调用 ChatGPT 创建模型。
Vscode 编辑器使用插件快速开发模型Neo 助手Neo 命令
使用 Yao-admin 自动生成模型
使用 Yao-admin 自动的根据数据库结构生成模型配置。
总结
在 Yao 应用开发中,模型的定义非常的关键,需要熟练与掌握。
善于利用脚本与 AI 工具,可以加快开发进度。